Laravelで419エラーが検出された場合の対処方法について
困っていた内容
あるサイトに対してブラウザでアクセスした際に自動的にajaxによりpost送信が仕組みである、サイト管理者側からpost送信した際にログ確認にしたところ、419エラーが発生したことを確認いたしました。
どのように対応すれば良いでしょうか。
発生原因
単一のインスタンスでは症状が発生しないことから、セッションが2つのインスタンスに分散されていることが原因で発生している可能性がございます。
また、エラー419自体はLaravelにてCSRF(クロスサイトリクエストフォージェリ)トークンの不一致が発生した場合&トークンを使用していない場合に生じるエラーと見受けられました。
どう対応すればいいの?
- ELBのスティッキーセッションが設定されていない場合、均等に2つのインスタンスにセッションが分散されるため、本事象が発生しているものと見受けられます。
以下ドキュメント[1]にスティッキーセッションの有効化の手順について記載がありますため、スティッキーセッションを有効化して、問題が改善されるかご確認ください。
CloudFront使用する場合の切り分け点
- CloudFrontによるjsファイルのCDN化に伴う不具合があるかご確認ください。
- Allowed HTTP Methods項目でPOSTは許可されているかもあわせてご確認ください。
参考資料
[1]Application Load Balancer のスティッキーセッション - Elastic Load Balancing